package com.mmall.utill;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

/**
 * Created by geely
 */
public class PropertiesUtil {

    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);

    private static Properties props;

    //static块 >普通代码块>构造方法
    //static块类被加载时执行且执行一次,用于初始化静态变量
    //class.forName("com.mysql.jdbc.Driver")加载该类其中的静态块方法被执行
    static{
        String fileName = "mmall.properties";
        props = new Properties();
        try {


            //反射
            //从输入流中读取属性列表（键和元素对）。通过对指定的文件（比如说上面的 test.properties 文件）进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
            props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName),"UTF-8"));
        } catch (IOException e) {
            logger.error("配置文件读取异常", e);
        }

    }

    public static String getProperty(String key) {
        String value = props.getProperty(key.trim());
        if (StringUtils.isBlank(value)) {
            return null;
        } else {
            return value.trim();
        }
    }

    public static String getProperty(String key, String defaultValue) {
        String value = props.getProperty(key.trim());
        if (StringUtils.isBlank(value)) {
            return defaultValue;
        } else {
            return value.trim();
        }
    }


//    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
//
//    private static Properties props;
//
//    static {
//        String fileName = "mmall.properties";
//        props = new Properties();
//        try {
//            props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName),"UTF-8"));
//        } catch (IOException e) {
//            logger.error("配置文件读取异常",e);
//        }
//    }
//
//    public static String getProperty(String key){
//        String value = props.getProperty(key.trim());
//        if(StringUtils.isBlank(value)){
//            return null;
//        }
//        return value.trim();
//    }
//
//    public static String getProperty(String key,String defaultValue){
//
//        String value = props.getProperty(key.trim());
//        if(StringUtils.isBlank(value)){
//            value = defaultValue;
//        }
//        return value.trim();
//    }


}
